package com.cmc.cloud.cmclink.doc.service;

import java.util.Collection;
import java.util.List;

import javax.validation.Valid;

import com.cmc.cloud.cmclink.doc.entity.BlnoFreightForecastDO;
import com.cmc.cloud.cmclink.doc.vo.blnofreightvo.BlnoFreightForecastCreateReqVO;
import com.cmc.cloud.cmclink.doc.vo.blnofreightvo.BlnoFreightForecastUpdateReqVO;

/**
 * 海运费附加费预计算 Service 接口
 *
 * @author 集运管理员
 */
public interface BlnoFreightForecastService {

    /**
     * 创建海运费附加费预计算
     *
     * @param createReqVO 创建信息
     */
    void createBlnoFreightForecast(@Valid BlnoFreightForecastCreateReqVO createReqVO);

    /**
     * 更新海运费附加费预计算
     *
     * @param updateReqVO 更新信息
     */
    void updateBlnoFreightForecast(@Valid BlnoFreightForecastUpdateReqVO updateReqVO);

    /**
     * 删除海运费附加费预计算
     *
     * @param id 编号
     */
    void deleteBlnoFreightForecast(Long id);

    /**
     * 获得海运费附加费预计算
     *
     * @param id 编号
     * @return 海运费附加费预计算
     */
    BlnoFreightForecastDO getBlnoFreightForecast(Long id);

    /**
     * 获得海运费附加费预计算
     *
     * @param blnoId 提单id
     * @return 海运费附加费预计算
     */
    List<BlnoFreightForecastDO> getBlnoFreightForecastByBlonId(Long blnoId);

    /**
     * 获得海运费附加费预计算列表
     *
     * @param ids 编号
     * @return 海运费附加费预计算列表
     */
    List<BlnoFreightForecastDO> getBlnoFreightForecastList(Collection<Long> ids);

    /**
     * 删除海运费预计算数据
     *
     * @param ids 编号
     */
    void deleteBlnoFreightForecast(Collection<Long> ids);

    /**
     * 批量插入
     *
     * @param blnoFreightDOList DO对象
     */
    void insertBatchBlnoFreightForecast(List<BlnoFreightForecastDO> blnoFreightDOList);
}
